#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//struct stu {
//	char name[20];
//	int age;
//};
//int com_int(const void* p1, const void* p2)
//{
//	return  (*(int*)p1 - *(int*)p2);
//}
//int com_char(const void* p1, const void* p2)
//{
//	return (*(char*)p1 - *(char*)p2);
//}
//int com_stu_name(const void* p1, const void* p2)
//{
//	return strcmp(((struct stu*)p1)->name, ((struct stu*)p2)->name);
//}
//void test1()
//{
//	int arr1[8] = { 7,8,4,5,6,2,1,3 };
//	int sz = sizeof(arr1) / sizeof(arr1[0]);
//	qsort(arr1, sz, sizeof(arr1[0]), com_int);
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr1[i]); 
//	}
//	printf("\n");
//}
//void test2()
//{
//	char arr2[10] = { 'a','b','f','d','c','g'};
//	int len = strlen(arr2);
//	qsort(arr2, len, sizeof(arr2[0]), com_char);
//	for (int i = 0; i < len; i++)
//	{
//		printf("%c ", arr2[i]);
//	}
//	printf("\n");
//
//}
//void test3()
//{
//	struct stu arr[3] = { {"zhangsan",30},{"lisi",35},{"wangwu",18} };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	qsort(arr, sz, sizeof(arr[0]), com_stu_name);
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%s ", arr[i]);
//	}
//}
//int main()
//{   
//	test1();
//    test2();
//	test3();
//
//	return 0;
//}
//void swap( void* p1, void*p2, int width)
//{
//	int i = 0;
//	for (i = 0; i < width; i++)
//	{
//		char tmp = *((char*)p1 + i);
//		*((char*)p1 + i) = *((char*)p2 + i);
//		*((char*)p2 + i) = tmp;
//	} 
//}
//int com(const void* p1, const void* p2)
//{
//	return (*(int*)p1 - *(int*)p2);
//}
//void bubble(void* arr, int sz, int width, int(*pf)(const void* p1,const  void* p2))
//{
//	int i = 0; 
//	for (i = 0; i < sz - 1; i++)
//	{     
//		int j = 0;
//		for (j = 0; j < sz - 1 - i; j++)
//		{
//			if (pf((char*)arr + j * width, (char*)arr + (j+1) * width) > 0)
//			{
//				swap((char*)arr + j * width, (char*)arr + (j+1) * width,width);
//			}
//		}
//	}
//}
//int main()
//{  
//	int arr[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	bubble(arr, sz, sizeof(arr[0]), com);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}
//int my_strlen( char* arr)
//{    
//	if (*arr != '\0')
//	{
//		return my_strlen(arr + 1) + 1;
//	}
//	else
//		return 0;
//}
//int main()
//{   
//	char arr[] = "abcdef";
//	int ret = my_strlen(arr);
//	printf("%d ", ret);
//	return 0;
//}
//#include<string.h>
//char* my_strcpy(char* dest, char* sou)
//{
//	char* ret = dest;
//	while (*dest++ = *sou++)
//		;
//	return ret;
//}
//int main()
//{   
//	char arr1[20] = "hello ";
//	char arr2[20] = "world";
//    my_strcpy( arr1,  arr2);
//	printf("%s\n", arr1);
//	return 0;
//}